import {
	ref,
	onMounted,
	onUnmounted
} from 'vue';
import Sqlite from '@/utils/sqlex.js'
import store from './store/index.js'
import { allunreadmess } from '@/request/app.js'
export default {
	socket: null,
	retries: 0, // 记录重试次数
	maxRetries: 5, // 设置最大重试次数
	init(url) {
		this.socket = uni.connectSocket({
			url: url,
			success: (res) => {
				allunreadmess({id:store.state.id}).then((e)=>{
					let arr = e.data.noredList
					 const groupedData = {};
					    // 循环数组
					    arr.forEach(item => {
					        const senderId = item.sender_id;
					        if (!groupedData[senderId]) {
					            groupedData[senderId] = [];
					        }
					        groupedData[senderId].push(item);
					    });
					    // 遍历分组后的数据，调用函数a传递参数
					    for (const senderId in groupedData) {
					        if (groupedData.hasOwnProperty(senderId)) {
								Sqlite.addnosoket(groupedData[senderId])
					        }
					    }
				})
				// console.log('WebSocket connection opened:', res);
			},
			fail: (err) => {
				console.error('WebSocket error:', err);
			}
		});

		this.socket.onMessage((res) => {
			// console.log("前端接收到信息",res)
			if(res.data=='followwarnyou'){
				store.state.followwarn = res.data;
			}else if(JSON.parse(res.data).type=='message'){				
				let int = Number(store.state.messagenum)+1
				// console.log(int,'应该出现信息提醒',store.state.messagenum)
				// 如果是信息，给消息tab加角标，角标数存储到vuex中，来一条信息加一个角标
				uni.setTabBarBadge({ //显示数字  
					index: 1, //tabbar下标
					text: int >99?'99+': `${int}`//数字
				})
				store.commit('setmessagenum', int);
				Sqlite.receivemess(JSON.parse(res.data))
			}
		});

		this.socket.onError((err) => {
			this.DisposeOFF()
			// 尝试重连
			// let timeoutId = setTimeout(() => {
			// 	console.log("后端连接断开，请求心脏包1")
			// 	this.retries++
			// 	if (this.retries == this.maxRetries) {
			// 		// 已经超过最大连接数
			// 		uni.showToast({
			// 			title: '网络异常',
			// 			icon: "error",
			// 			duration: 2000
			// 		})
			// 		uni.reLaunch({
			// 			url: '/pages/index/index' // 注意路径格式  
			// 		});
			// 		this.$store.dispatch('stopTokenCheck');
			// 		this.$store.commit("quit")
			// 		localStorage.removeItem('id')
			// 		uni.removeStorageSync('token')
			// 		uni.removeStorageSync('refreshToken')
			// 		clearTimeout(timeoutId);
			// 	} else {
			// 		this.init(url)
			// 	}
			// }, 5000);
		});

		// 可以在这里添加关闭事件处理
		this.socket.onClose((res) => {
			// 尝试重连
			this.DisposeOFF()
			// let timeoutId = setTimeout(() => {
			// 	console.log("后端连接断开，请求心脏包2")
			// 	this.retries++
			// 	if (this.retries == this.maxRetries) {
			// 		// 已经超过最大连接数
			// 		uni.showToast({
			// 			title: '网络异常',
			// 			icon: "error",
			// 			duration: 2000
			// 		})
			// 		uni.reLaunch({
			// 			url: '/pages/index/index' // 注意路径格式  
			// 		});
			// 		this.$store.dispatch('stopTokenCheck');
			// 		this.$store.commit("quit")
			// 		localStorage.removeItem('id')
			// 		uni.removeStorageSync('token')
			// 		uni.removeStorageSync('refreshToken')
			// 		clearTimeout(timeoutId);
			// 	} else {
			// 		this.init(url)
			// 	}
			// }, 5000);
		});
	},
 a(messageGroup) {
    console.log('Calling function a with:', messageGroup);
},
	send(message) {
		if (this.socket && this.socket.readyState === 1) { // readyState 1 表示已连接
		console.log("成功发送信息")
			this.socket.send({
				data: JSON.stringify(message)
			});
		}else{
			console.log("未发送信息，并没有连接")
		}
	},

	close() {
		if (this.socket) {
			this.socket.close({id:store.state.id});
			this.socket = null;
		}
	},
	// 处置连接断开
	DisposeOFF(){
		console.log("由我处置连接断开")
	}

};